This invention relates to security features which may be used in programmable calculators to protect proprietary programs. The proprietary programs may be stored on magnetic tapes or cards or in memories, including read-only-memories.
Disclosed herein is a programmable calculator having a plug-in Read-Only-Memory (ROM) chip for storing high order calculational programs and a magnetic card reader for reading in high order calculational programs on the magnetic cards to a Random Access Memory (RAM) located in the calculator system. The security code system of this invention may be used with (1) the programs stored on the plug-in ROM chip; or (2) the programs loaded into the RAM from magnetic cards; or (3) with the programs on the magnetic cards and in the ROM chips.
Using my invention with the calculator system disclosed herein can provide the operator thereof with a wider selection of programs inasmuch as owners of proprietary programs should be more likely to license calculator users to use such programs if the programs can be protected. Once a proprietary program has been interfaced with or loaded into the calculator (the proprietary program having a set security code associated therewith), the operator may then use the proprietary program to calculate answers for his or her inputted data; however, the operator will be unable to examine the proprietary program. When a non-proprietary program is read in (the security code not being set, of course), then the calculator operator can both run the program and examine the program. Such a non-proprietary program may be examined, for instance, by placing the programmable calculator in its learn mode and single stepping through the program codes comprising the program.
It is one object of this invention to provide a security system for an electronic programmable calculator.
It is another object of this invention that the security system be utilizable with a program read in from an external source, such as a magnetic card and/or a program stored in a read-only-memory, particularly a program stored in a ROM installed in a plug-in module.
It is another object of this invention that the programs loaded or interfaced with the calculator system be provided with a security code indicative of whether the program is proprietary or non-proprietary.
It is still yet another object of this invention that when a proprietary program is loaded or interfaced with the electronic calculator that the program be utilizable by an operator of the electronic calculator but not be examinable by an operator of the calculator.
It is still yet another object of this invention that non-proprietary programs be both utilizable and examinable by an operator of the calculator.
The foregoing objects are achieved as is now described. An electronic programmable calculator having both a learn mode and a run mode is provided with a security system for protecting calculator programs stored in a memory means for storing a calculator program. This memory means may be provided by a ROM chip, a RAM or a magnetic card to tape, for instance. The calculator program preferably includes a plurality of program codes, each program code typically mimicing the depression of a key or group of keys on a calculator keyboard when encountered in a program when the calculator is in its run mode. The memory means also stores a security code which may be set or not set. When set, the security code indicates that the program in the memory means is a proprietary program; when not set, the security code indicates that the program is a non-proprietary program. Programs, including the security code associated therewith, which are stored on a magnetic card or tape are preferably read into a program memory area in the calculator, typically provided by a RAM. Thus, when using magnetic cards or tapes to store programs, the program itself and the associated security code are stored in the calculator. Of course when a ROM is used to store programs and associated security code, it usually is not required to transfer the contents of the ROM to the program memory in order to execute the program or to check the setting of the security code so long as the ROM is coupled to the calculator during program execution. When the operator of the programmable calculator attempts to operate keys which would allow him or her to examine the calculator program, the appropriate security code (either for the magnetic card or the read-only-memory chip, as appropriate) is tested and if the security code is set then such keyboard inputs are ignored.
In the embodiment featuring a magnetic card reader, the keyboard inputs associated with the learn mode of the calculator, that is, keys placing the calculator in its learn mode as well as keys permitting single stepping the program stored in the program memory are disabled when the security code is set. In the disclosed embodiment wherein the memory means is provided by a ROM chip, keyboard inputs which otherwise load the program stored in the ROM into the program memory are ignored. Of course, in other embodiments, it may be preferable to permit the program to be loaded from the ROM chip to the calculator's program memory and then disable keyboard inputs associated with the calculator's learn mode.